ZipProvider Class Reference

Inheritance diagram for ZipProvider:
ArchiveProvider

List of all members.

Public Member Functions

 __construct (Folder $folder, $recursion=FALSE, $tempFile=null)
 __destruct ()
 setRecursion ($recursion)
 getRecursion ()
 setTempFile ($tempFile)
 getTempFile ()
 setFolder (Folder $folder)
 getFolder ()
 createArchive ()
 sendArchive ()

Static Public Member Functions

static checkArchiveSize (Folder $folder, $recursion)

Private Member Functions

 logFolderDownload (Folder $folder)

Private Attributes

 $folder
 $recursion
 $tempFile

Detailed Description

Provides a zip archive of a folder.

Author:
Bjoern Kasteleiner <bjoern.kasteleiner@mni.fh-giessen.de>
Version:
Id
class.zipprovider.inc.php 2348 2009-06-04 13:29:47Z commana

Definition at line 41 of file class.zipprovider.inc.php.


Constructor & Destructor Documentation

ZipProvider::__construct ( Folder folder,
recursion = FALSE,
tempFile = null 
)

Constructor for ZipProvider class.

Basic checks of incomming values. If $tempFile is null, the upload_path is used to create a temporary file for zip creation.

Parameters:
Folder $folder Folder
Boolean $recursion Recursion flag (Default: False)
String $tempFile Temporary filepath (Default: null)

Implements ArchiveProvider.

Definition at line 57 of file class.zipprovider.inc.php.

References $recursion, and $tempFile.

00057                                                                                           {
00058                 assert(!is_null($folder));
00059                 assert($folder instanceof Folder);
00060                 
00061                 global $settings;
00062                 
00063                 $this->folder = $folder;
00064                 $this->recursion = $recursion;
00065                 
00066                 if (empty($tempFile)) {
00067                         $basedir  = PATH_TO_ROOT.$settings["upload_path"];
00068                         $basedir .= 'filemanager/courseID/'.$_SESSION['course'];
00069                         
00070                         $tempFile = tempnam($basedir, "archiver");
00071                 } 
00072                 
00073                 $this->tempFile = $tempFile;
00074         }

ZipProvider::__destruct (  ) 

Destructor of ZipProvider.

Used to clean up temporary files if needed.

Implements ArchiveProvider.

Definition at line 82 of file class.zipprovider.inc.php.

00082                                      {
00083                 if (file_exists($this->tempFile)) {
00084                         unlink($this->tempFile); 
00085                 }
00086         }


Member Function Documentation

static ZipProvider::checkArchiveSize ( Folder folder,
recursion 
) [static]

Check archive filesizes.

Calculate the filesize of the folder and its subfolders.

Parameters:
Folder $folder Folder
Boolean $recursion Recursion flag
Returns:
Integer Size of folder and subfolders

Implements ArchiveProvider.

Definition at line 222 of file class.zipprovider.inc.php.

References $recursion, Folder::getFiles(), and Folder::getSubFolders().

Referenced by Filemanager::getArchivedFolder(), and Folder::getUserIcons().

00222                                                                             {
00223                 global $resDB;
00224 
00225                 $size = 0;
00226                 
00227                 $files = $folder->getFiles();
00228                 foreach ($files as $file) {
00229                         $size += $file->getSize();
00230                 }
00231                 
00232                 if ($recursion) {
00233                         $subFolders = $folder->getSubFolders();
00234                         foreach ($subFolders as $subFolder) {
00235                                 $size += self::checkArchiveSize($subFolder, $recursion);
00236                         }       
00237                 }
00238                 
00239                 return $size;
00240         }

ZipProvider::createArchive (  ) 

Create an archive of the given Folder.

With or without subfolders, depending on recursion flag.

Implements ArchiveProvider.

Definition at line 147 of file class.zipprovider.inc.php.

00147                                         {
00148                 $zipArchiver = new ZipArchive();
00149                 if ($zipArchiver->open($this->tempFile, ZipArchive::OVERWRITE) !== TRUE) {
00150                         throw new ArchiverException("Fehler beim Anlegen des Archivs. ".$this->tempFile);
00151                 }
00152                 
00153                 $zipVisitor = new ZipVisitor($zipArchiver, $this->recursion);
00154                 $this->folder->archiverAccept($zipVisitor); 
00155                 
00156                 if ($zipArchiver->status != ZipArchive::ER_OK) {
00157                         throw new ArchiverException("Fehler beim Erzeugen des Archivs: ".$zipArchiver->status);
00158                 }
00159                 $zipArchiver->close();
00160         }

ZipProvider::getFolder (  ) 

Getter for archiving folder.

Returns:
Folder Folder

Implements ArchiveProvider.

Definition at line 138 of file class.zipprovider.inc.php.

00138                                     {
00139                 return $this->folder;
00140         }

ZipProvider::getRecursion (  ) 

Getter for recursion flag.

Returns:
Boolean Recursion flag

Implements ArchiveProvider.

Definition at line 102 of file class.zipprovider.inc.php.

00102                                        {
00103                 return $this->recursion;
00104         }

ZipProvider::getTempFile (  ) 

Getter for temporary file.

Returns:
String Temporary filepath

Implements ArchiveProvider.

Definition at line 120 of file class.zipprovider.inc.php.

00120                                       {
00121                 return $this->tempFile;
00122         }

ZipProvider::logFolderDownload ( Folder folder  )  [private]

Logging folder download and increment folder download count.

Parameters:
Folder $folder Folder

Definition at line 194 of file class.zipprovider.inc.php.

References Folder::getFiles(), Resource::getID(), and Folder::getSubFolders().

Referenced by sendArchive().

00194                                                            {
00195                 global $resDB;
00196                 
00197                 $resDB->logResourceDownload($folder->getID());
00198                 
00199                 $files = $folder->getFiles();
00200                 foreach ($files as $file) {
00201                         $resDB->logResourceDownload($file->getID());
00202                 }
00203                 
00204                 if ($this->recursion) {
00205                         $subFolders = $folder->getSubFolders();
00206                         foreach ($subFolders as $subFolder) {
00207                                 $this->logFolderDownload($subFolder);
00208                         }
00209                 }
00210         }

ZipProvider::sendArchive (  ) 

Send archive to the client.

Send needed header informations and logging folder download and increment folder download count.

Implements ArchiveProvider.

Definition at line 168 of file class.zipprovider.inc.php.

References logFolderDownload().

00168                                       {
00169                 global $resDB;
00170                 
00171         if (file_exists($this->tempFile)) {
00172                 $filename  = $resDB->getCourseShortNameByID($this->folder->getCourseID());
00173                 $filename .= "-".$this->folder->getLink().".zip";
00174                 
00175                 $this->logFolderDownload($this->folder);
00176                 
00177                 header("Content-Type: application/zip");
00178                 header("Content-Disposition: attachment; filename=\"".$filename."\"");
00179                 header("Content-Transfer-Encoding: binary");
00180                 header("Content-Length: ".filesize($this->tempFile));
00181                 
00182                 readfile($this->tempFile);
00183                 unlink($this->tempFile);
00184         } else {
00185                 throw new ArchiverException("Bereitgestelltes Zip Archive konnte nicht gefunden werden.");
00186         }
00187         }

ZipProvider::setFolder ( Folder folder  ) 

Setter for archiving folder.

Parameters:
Folder $folder Folder

Implements ArchiveProvider.

Definition at line 129 of file class.zipprovider.inc.php.

00129                                                   {
00130                 $this->folder = $folder;
00131         }

ZipProvider::setRecursion ( recursion  ) 

Setter for recursion flag.

Parameters:
Boolean $recursion Recursion flag

Implements ArchiveProvider.

Definition at line 93 of file class.zipprovider.inc.php.

References $recursion.

00093                                                  {
00094                 $this->recursion = $recursion;
00095         }

ZipProvider::setTempFile ( tempFile  ) 

Setter for temporary file.

Parameters:
String $tempFile Temporary filepath

Implements ArchiveProvider.

Definition at line 111 of file class.zipprovider.inc.php.

References $tempFile.

00111                                                {
00112                 $this->tempFile = $tempFile;
00113         }


Member Data Documentation

ZipProvider::$folder [private]

Definition at line 42 of file class.zipprovider.inc.php.

ZipProvider::$recursion [private]

Definition at line 43 of file class.zipprovider.inc.php.

Referenced by __construct(), checkArchiveSize(), and setRecursion().

ZipProvider::$tempFile [private]

Definition at line 44 of file class.zipprovider.inc.php.

Referenced by __construct(), and setTempFile().


The documentation for this class was generated from the following file:
 All Classes Namespaces Files Functions Variables Enumerations

Generated on Fri Oct 30 17:21:39 2009 for MSP Modul Ressourcen by  doxygen 1.6.1